#include<iostream>
#include<unistd.h>
#include<signal.h>
#include<sys/types.h>

void func(int sig)
{
    std::cout << "get a signal number : " << sig << std::endl;
}
int main()
{
    //对信号的捕获只需要写一个，后续一直有效！
    //1.产生一次2号信号，就执行一次func方法；
    //2.一个进程，可以同时对很多的信号进行捕获；
    //3.2号信号是SIGINT，即signal interrupt信号，等价于键盘输入Ctrl + C
    #ifdef v1
    signal(2, func); 
    signal(3, func); 
    signal(4, func); 
    #endif

    //假如对所有的1-31信号都进行捕获会发生什么：
    #ifdef v2
    for(int i = 1; i<=31; i++)
    {
        if(signal(i, func) == SIG_ERR) 
            std::cerr << "Error signal capture! the sig is " << i << std::endl;
    }
    #endif

    while(true)
    {
        std::cout << "Hello Linux. My pid is " << getpid() << std::endl;
        sleep(1);
    }
    return 0;
}